package models

import "gorm.io/gorm"

// SysLog 日志结构体
type SysLog struct {
	gorm.Model
	Browser     string `gorm:"column:browser;type:varchar(32)" json:"browser"`
	ClassMethod string `gorm:"column:class_method;type:varchar(255)" json:"classMethod"`
	HttpMethod  string `gorm:"column:http_method;type:varchar(20)" json:"httpMethod"`
	Params      string `gorm:"column:params;type:varchar(255)" json:"params"`
	RemoteAddr  string `gorm:"column:remote_addr;type:varchar(255)" json:"remoteAddr"`
	RequestURI  string `gorm:"column:request_uri;type:varchar(255)" json:"requestURI"`
	Response    string `gorm:"column:response;type:text(10000)" json:"response"`
	StatusCode  int    `gorm:"column:status_code;type:int(11)" json:"statusCode"`
	UseTime     int64  `gorm:"column:use_time;type:int(11)" json:"useTime"`
	// 国家
	Country string `gorm:"column:country;type:varchar(255)" json:"country"`
	// 区域
	Region string `gorm:"column:region;type:varchar(255)" json:"region"`
	// 省份
	Province string `gorm:"column:province;type:varchar(255)" json:"province"`
	//城市
	City string `gorm:"column:city;type:varchar(255)" json:"city"`
	// 运营商
	Isp string `gorm:"column:isp;type:varchar(255)" json:"isp"`
}

// TableName 定义表名
func (sysLog *SysLog) TableName() string {
	return "sys_log"
}

// GetLogList 获取日志列表
func GetLogList(keyword string) *gorm.DB {
	tx := DB.Model(new(SysLog)).Select("id,browser,class_method,http_method,remote_addr,status_code,use_time,country,region,province,city,created_at")
	if keyword != "" {
		tx = tx.Where("title like ?", "%"+keyword+"%")
	}
	return tx
}
